A typical configuration in many embedded devices is to store and run the operating system from the flash memory (or ROM), and store required data in a non-volatile RAM. However, many pervasive embedded devices have a full-fledged operating system, one or more file-systems, along with a bootloader and other data components, resident in flash memory.
The life of flash memory storage is largely dictated by the number of accesses that occur to flash memory when updating flash memory. Any writes to a flash location are preceded by a corresponding erase. Erasing flash memory is a slow and time consuming process.
During software development and testing, there is a frequent need to update a combination of selected images. Effective flash life time, and speed of development, can be adversely affected if existing images are relocated while performing such selective updates.
In view of the above, a need clearly exists for improved method of updating code in embedded devices that at least attempts to address one or more of the above limitations.